package com.danhar.forward.util;

import com.alibaba.fastjson.JSONObject;

import java.util.List;
import java.util.Map;

import static com.alibaba.fastjson.serializer.SerializerFeature.WriteMapNullValue;

/**
 * 字符处理工具类
 *
 * @author wu
 * @version 1.0
 * @date 2020/6/22/022
 */
public class StringUtil {
    /**
     * 判断字符串是否不为空
     *
     * @param str
     * @return
     */
    public static boolean isNotEmpty(String str) {
        //则字符串不为空或空格
        if (str != null && !"".equals(str.trim())) {
            return true;
        }
        return false;
    }

    /**
     * 判断字符串是否为空
     *
     * @param str
     * @return
     */
    public static boolean isEmpty(String str) {
        //则字符串不为空或空格
        if (str == null || "".equals(str.trim())) {
            return true;
        }
        return false;
    }


    /**
     *
     *
     * 对象互相转换
     *
     *
     *
     */

    /**
     * json转map
     *
     * @param json 需要转换的json串
     * @return map
     */
    public static Map jsonToMap(JSONObject json) {
        Map<String, Object> map = json;
        return map;
    }

    /**
     * map转Json
     *
     * @param map
     * @return json数据
     */
    public static JSONObject mapToJson(Map<String, Object> map) {
        return new JSONObject(map);
    }

    /**
     * string 转 json
     *
     * @param str 需要装换成ResponseEntity的字符串
     * @return 返回前端的Json数据
     */
    public static ResponseEntity stringToResponseEntity(String str) {
        return JSONObject.parseObject(str, ResponseEntity.class);
    }
    /**
     * response 转 json
     *
     * @param response 需要装换成Json字符串
     * @return 返回前端的Json数据
     */
    public static JSONObject responseEntityToJson(ResponseEntity response) {
        String pojo = JSONObject.toJSONString(response);
        return stringToJson(pojo);
    }

    /**
     * 对象转json
     *
     * @param obj
     * @return
     */
    public static JSONObject objectToJson(Object obj) {
        String str = JSONObject.toJSONString(obj);
        return stringToJson(str);
    }

    /**
     * String 转 Json
     *
     * @param str
     * @return
     */
    public static JSONObject stringToJson(String str) {
       return JSONObject.parseObject(str);
    }

    /**
     * json 转 String
     *
     * @param json
     * @return
     */
    public static String jsonToString(JSONObject json) {
        return JSONObject.toJSONString(json);
    }

    /**
     * 把List转JSON
     *
     * @param list
     * @return
     */
    public static JSONObject listToJson(List<Object> list) {
        //将字符串转换成为对象集合
        String str = JSONObject.toJSONString(list);
        return stringToJson(str);
    }

    /**
     * 把List<Map<String,Object>>转JSON
     *
     * @param list
     * @return
     */
    public static JSONObject listMapToJson(List<Map<String, Object>> list) {
        //将字符串转换成为对象集合
        String str = JSONObject.toJSONString(list, WriteMapNullValue);
     /*   System.out.println(str);
        JSONObject[] dataZoom = new JSONObject[]{JSONObject.parseObject(str)};
        Map<String,Object> map = new HashMap<>();
        for (JSONObject jsonObject : dataZoom) {

        }*/
        //List<Map<String,Object>> studentList1 = JSON.parseArray(JSON.parseObject(json).getString("studentList"), Map.class);
        return stringToJson(str);
    }

    public static <T> List<T> jsonToList(JSONObject json) {
        String string = json.toJSONString();
        List<T> list = (List<T>) JSONObject.parseArray(string);
        return list;
    }

}
